package com.klod.news.data

import androidx.compose.runtime.Composable

class NetworkStateScope<T> {
    internal var loadingComposable: (@Composable () -> Unit)? = null
    internal var successComposable: (@Composable (data: T) -> Unit)? = null
    internal var errorComposable: (@Composable (errorMessage: String, retry :() -> Unit) -> Unit)? = null
    // internal var otherComposable: (@Composable () -> Unit)? = null // 如果需要处理其他未知情况

    /**
     * 定义加载状态下的 Composable UI。
     */
    fun onLoading(content: @Composable () -> Unit) {
        loadingComposable = content
    }

    /**
     * 定义成功状态下的 Composable UI。
     * @param content 一个接收数据 T 并渲染 UI 的 Composable lambda。
     */
    fun onSuccess(content: @Composable (data: T) -> Unit) {
        successComposable = content
    }

    /**
     * 定义错误状态下的 Composable UI。
     * @param content 一个接收错误信息 String 并渲染 UI 的 Composable lambda。
     */
    fun onError(content: @Composable (errorMessage: String,retry:() -> Unit) -> Unit) {
        errorComposable = content
    }

    // /**
    //  * 定义其他未知状态下的 Composable UI (可选)。
    //  */
    // fun onOther(content: @Composable () -> Unit) {
    //     otherComposable = content
    // }
}